<?php
require_once(INCPATH . "core/ioc/applicationcontext.inc.php");
require_once(MODULESPATH . "accounts/accounts.inc.php");

/**
 * 账户系统业务层用户类的接口。
 */
interface IBUser extends IAdjustUserData, IInjectEnable{    
    /**
     * 根据外部映射账号，获取系统用户ID。
     * @param Int $mappingId 外部账号。
     * @param String $type 外部账户映射类型。
     * @return 系统用户ID(未获取到返回-1)。
     */
    function getUidByMapping($mappingId, $type);
    
    /**
     * 获取当前用户的ID。
     */
    function getCurrentUserId();
    
    /**
     * 设置用户的首先项。
     * @param String $key 首选项的键。
     * @param String $val 首选项的值。
     * @return 是否设置成功。
     */
    function setPreference($key, $val);
    
    /**
     * 获取用户的首选项列表。
     * @return 用户的首选项列表。
     */
    function getPreferences();
}

/**
 * 账户系统业务层用户首选项类的接口。
 */
interface IBPreference extends IAdjustUserData, IInjectEnable{
    /**
     * 设置用户的首先项。
     * @param Int $userId 系统用户ID。
     * @param String $key 首选项的键。
     * @param String $val 首选项的值。
     * @param String $type 用户首选项的类型。
     * @return 是否设置成功。
     */
    function setPreference($userId, $key, $val, $type);
    
    /**
     * 获取用户的首选项列表。
     * @param Int $userId 系统用户ID。
     * @param String $type 用户首选项的类型。
     * @return Array 首选项列表。
     */
    function getPreferences($userId, $type);
}
?>
